package com.softer.wxzj.mapper;

import com.softer.wxzj.entity.*;
import com.softer.wxzj.mapper.base.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Map;

/**
 * BaseModifyDetailMapper class
 *
 * @author WXR
 * @date 2019/4/29
 */
@Repository
public interface BaseModifyDetailMapper extends BaseMapper<BaseModifyDetail> {
    /**
     * 根据变更类型查询变更详情
     *
     * @return
     */
    List<BaseModifyDetail> getListByReqId(String reqId);

    /**
     * 查询房间id
     *
     * @param id
     * @return
     */
    List<String> selectBusinessId(String id);

    /**
     * 查询变更的数据
     */
    Map selectAllChange(@Param("businessId") String businessId, @Param("id") String id);

    /**
     * 根据reqId查询变更字段、新值
     *
     * @param reqId
     * @return
     */
    List<Map<String, Object>> getDetailListByReqId(String reqId);

    /**
     * 根据reqId查询变更字段、新值
     *
     * @param reqId
     * @return
     */
    List<Map<String, Object>> getDetailListByReqIdBuild(@Param("reqId") String reqId, @Param("cellNo") String cellNo);


    /**
     * 查看id
     *
     * @param reqNo
     * @return
     */
    List<String> selectBusiness(String reqNo);

    /**
     * 根据detail表businessid 获取变更列名
     */
    List<Map<String, Object>> getDetailListByBusiness(@Param("id") String id, @Param("reqId") String reqId);

    /**
     * 根据detail表businessid 获取变更列名
     */
    List<Map<String, Object>> getDetailListByBusinessNextId(@Param("id") String id, @Param("reqId") String reqId);

    /**
     * 查询哪个是业主删除
     *
     * @param id
     * @return
     */
    List<String> selectDeleteOwner(String id);

    /**
     * 查询哪个是业主增加
     *
     * @param id
     * @return
     */
    List<String> selectAddOwner(String id);

    /**
     * 查询正在变更自然名字的名字
     *
     * @param id
     * @return
     */
    List<String> selectBuildName(@Param("id") String id, @Param("subNo") String subNo);

    /**
     * 查询
     *
     * @param
     * @param name
     * @return
     */
    int selectCommitteName(String name);

    /**
     * 查询变更新增的房屋
     *
     * @return
     */
    List<BaseHouseInfo> selectAllList(Map map);

    /**
     * 通过变更id和房屋id行转列
     *
     * @param map
     * @return
     */
    BaseHouseInfo selectHouseAllList(Map map);

    /**
     * 旧值
     *
     * @param map
     * @return
     */
    BaseHouseInfo selectHouseAllListOld(Map map);

    /**
     * 修改新增房屋的数据
     *
     * @return
     */
    int addHouse(@Param("id") String id, @Param("name") String name, @Param("newValue") String newValue, @Param("reqNo") String reqNo);

    /**
     * 删除添加的房屋
     *
     * @param id
     * @param reqNo
     * @return
     */
    int delHouse(@Param("id") String id, @Param("reqNo") String reqNo);

    /**
     * 查看是否有新增的房屋
     *
     * @param reqNo
     * @return
     */
    int changePage(String reqNo);

    /**
     * 查询要删除的房屋
     *
     * @return
     */
    String selectDelHouse(@Param("id") String id, @Param("type") String type);

    /**
     * 查询房屋变更房屋id
     *
     * @param id
     * @return
     */
    List<String> getModifyDetailHouseId(String id);

    /**
     * 查询房屋变更房屋id
     *
     * @param id
     * @return
     */
    List<BaseModifyDetail> getModifyDetailHouseIdList(@Param("id") String id, @Param("reqNo") String reqNo);

    /**
     * 查询自然幢变更
     *
     * @param id
     * @return
     */
    List<BaseModifyDetail> selectByReqNo(String id);

    /**
     * 查询变更数据
     *
     * @param reqNo
     * @return
     */
    int selectCountByReqNo(String reqNo);

    /**
     * 查询有没有reqNo
     *
     * @param reqNo
     * @return
     */
    int selectByReq(String reqNo);

    /**
     * 批量添加
     *
     * @param baseModifyDetails
     * @return
     */
    int insertList(@Param("baseModifyDetails") List<BaseModifyDetail> baseModifyDetails);

    /**
     * 查询t添加的房屋
     *
     * @param id
     * @return
     */
    List<String> selectByReqNoType(@Param("id") String id, @Param("type") String type);

    List<String> selectByReqNoTypeNull(@Param("type") String type);

    /**
     * 房屋删除id
     *
     * @param type
     * @return
     */
    List<String> selectByReqNoTypeNullDel(@Param("type") String type);

    /**
     * 通过变更id查询单元id
     *
     * @param reqNo
     * @return
     */
    List<String> selectByReqNoId(String reqNo);

    /**
     * 通过变更id查询变更更房屋id
     *
     * @param reqNo
     * @return
     */
    List<String> selectBusinessNextByReqNoId(String reqNo);

    List<String> selectBusinessNextByReqNoIdNull(String cellNo);

    /**
     * 查询该单元房屋有没有变更
     */
    int selectChangeHouseByCell(String cellNo);

    /**
     * detail添加req
     *
     * @param reqNo 变更id
     * @param id    要变更的单元集合
     * @return
     */
    int updateReqNoByBusinessId(@Param("reqNo") String reqNo, @Param("id") String id);

    /**
     * 删除
     *
     * @param rId
     * @return
     */
    int delByReqNo(String rId);

    /**
     * 查询新增的房屋
     *
     * @return
     */
    List<String> selectAddHouse(@Param("id") String id, @Param("type") String type);

    /**
     * 查询删除的房屋
     *
     * @param id
     * @param type
     * @return
     */
    List<String> selectDelHouseList(@Param("id") String id, @Param("type") String type);

    /**
     * 添加单元的类型
     *
     * @param map
     * @return
     */
    BaseCellInfo selectAddCell(Map map);

    /**
     * 查询旧值
     *
     * @param map
     * @return
     */
    BaseCellInfo selectOldCell(Map map);

    /**
     * 单元
     *
     * @param reqNo
     * @return
     */
    List<String> getColumnListAndCell(@Param("reqNo") String reqNo);

    /**
     * 查询单元有没有变更
     *
     * @param reqNo
     * @param id
     * @return
     */
    int selectCountChangeCell(@Param("reqNo") String reqNo, @Param("id") String id);

    /**
     * 看有没有变更
     *
     * @param cellId
     * @return
     */
    int selectChangeHouseAre(String cellId);

    int selectAdd(@Param("id") String id, @Param("houseId") String houseId);

    /**
     * 查询变更后的单元名称
     *
     * @param reqNo
     * @param cellNo
     * @return
     */
    String selectCountChangeCellByName(@Param("reqNo") String reqNo, @Param("cellNo") String cellNo);

    List<String> getColumnListNull();

    BaseHouseInfo selectHouseAllListNotReq(Map map);

    /**
     * 房屋变更
     *
     * @return
     */
    int selectChangeHouse();

    /**
     * 查询该单元有没有过房屋变更
     *
     * @param businessId
     * @return
     */
    int selectHouseChange(String businessId);

    /**
     * 删除刚添加的房屋
     *
     * @param cellNo
     * @return
     */
    int deleteByCell(String cellNo);

    /**
     * 删除单元
     *
     * @param id
     * @return
     */
    List<String> deleCellId(String id);

    /**
     * 房屋变更的房屋id
     *
     * @return
     */
    String selectChangeHouseIds();

    /**
     * 查询该单元有没有变更
     *
     * @param cellId
     * @return
     */
    int selectHaveChange(String cellId);

    List<String> selectByReqNoTypeCell(@Param("id") String id, @Param("type") String type);

    /**
     * 查询修改房屋 （之前为维护现在维护的房屋的id）
     *
     * @param ids
     * @return
     */
    List<String> reqNoChangeHouse(@Param("ids") String ids);

    /**
     * 查询该房屋是不是修改
     *
     * @param id
     * @param chan
     * @return
     */
    int selectChangeHouseById(@Param("id") String id, @Param("chan") String chan);

    /**
     * 查询修改的单元id
     *
     * @param id
     * @return
     */
    List<String> selectChangeCell(String id);

    /**
     * 查询添加单元
     *
     * @param id
     * @return
     */
    List<String> selectAddCellId(String id);
    List<String> selectDeletesCellId(String id);
    /**
     * chauxn req变更
     *
     * @param id
     * @return
     */
    List<String> selectByReqNoIdCell(String id);

    /**
     * 查询删除数据
     *
     * @param
     * @return
     */
    List<String> selectDelHouseByReqNo(String id);

    /**
     * 查询本次提交审核的房屋id
     *
     * @param id
     * @return
     */
    List<String> selectDelHouseId(String id);

    /**
     * 查询新增单元的单元名称
     *
     * @param cellNo 单元id
     * @param reqNo  变更id
     * @return
     */
    String selectCellName(@Param("cellNo") String cellNo, @Param("reqNo") String reqNo);

    /**
     * 自然幢id
     *
     * @param cellId
     * @return
     */
    String selectBuidNo(String cellId);

    /**
     * 自然妆id
     *
     * @param houseId
     * @return
     */
    String selectBuidNoByHouseId(@Param("houseId") String houseId, @Param("name") String name);

    /**
     * 结构变更是否有电梯
     *
     * @param cellId
     * @return
     */
    String selectEle(String cellId);

    /**
     * 查询变更项有没有变更开发企业或者物业企业
     *
     * @param id
     * @param no
     * @return
     */
    BaseModifyDetail setByReqNo(@Param("id") String id, @Param("no") String no);

    /**
     * 查询单元变更所有的房屋id
     *
     * @param id
     * @return
     */
    List<String> selectAllHouseId(String id);

    /**
     * 查询有没有被使用过
     *
     * @param zoneCode
     * @return
     */
    int selectZoneCode(String zoneCode);

    int selectCommitteNum(String orgTypeCode);

    /**
     * 获取删除的子业务ID集合（比如小区变更时，删除的分区ID集合）
     *
     * @param id 变更ID
     * @return 子业务ID集合
     */
    List<String> getDelBusinessId(String id);

    /**
     * 获取新增的子业务ID集合（比如小区变更时，新增的分区ID集合）
     *
     * @param id 变更ID
     * @return 子业务ID集合
     */
    List<String> getAddBusinessId(String id);

    /**
     * 获取修改的子业务ID集合（比如小区变更时，修改的分区ID集合）
     *
     * @param id 变更ID
     * @return 子业务ID集合
     */
    List<String> getModifyBusinessId(String id);

    /**
     * 根据变更ID和businessId查询变更列
     *
     * @param id         变更Id
     * @param businessId 子级别Id
     * @return 变更列
     */
    List<String> getColumnListByBusinessId(@Param("id") String id, @Param("businessId") String businessId);

    /**
     * 将变更项转换为实体
     *
     * @param map 查询条件
     * @return 分区实体
     */
    BaseSubRegionInfo getDelSubRegionInfo(Map<String, Object> map);

    /**
     * 将变更项转换为实体
     *
     * @param map 查询条件
     * @return 分区实体
     */
    BaseSubRegionInfo getAddSubRegionInfo(Map<String, Object> map);

    /**
     * 查询分区的变更项值集合
     *
     * @param id         变更ID
     * @param businessId 分区ID
     * @return 变更项值集合
     */
    BaseModifyDetail getModifyDetail(@Param("id") String id, @Param("businessId") String businessId);

    /**
     * 变更审核通过后，查询新增的分区集合
     *
     * @param id         变更ID
     * @param businessId 新增的分区的ID集合
     * @return 新增的分区集合
     */
    List<BaseSubRegionInfo> getAddBaseSubRegion(@Param("id") String id, @Param("businessId") String businessId);

    /**
     * 变更审核通过后，查询修改单的分区集合
     *
     * @param id         变更ID
     * @param businessId 改单的分区的ID集合
     * @return 改单的分区集合
     */
    List<BaseSubRegionInfo> getModifyBaseSubRegion(@Param("id") String id, @Param("businessId") String businessId);

    /**
     * 查询有没有变更
     *
     * @param id
     * @return
     */
    int selectByBusiId(String id);

    int selectCountByNext(String id);

    /**
     * @param uuid
     * @return
     */
    List<String> selectCellById(String uuid);

    /**
     * 查询最近一次查询
     *
     * @param id
     * @return
     */
    String selectByReqTime(@Param("id") String id, @Param("columnName") String columnName, @Param("type") String type);

    /**
     * 通过变更id删除数据
     */
    int remove(String id);

    /**
     * 删除是空的reqno
     *
     * @param id
     * @return
     */
    int removeIsNull(String id);

    /**
     * 查看该小区有没有更改
     *
     * @param id
     * @return
     */
    int cellHaveChange(String id);
}
